package Controler;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.Timer;

import Model.*;
import View.*;

public class Controleur {
	
	Display vue;

	/**
	 * Point d'entree du programme
	 * @param args
	 */
	public static void main(String[] args) {
		
		new Controleur();
	}
	
	
	Manette manette= new Manette();
	TrainAterrissage train= new TrainAterrissage();
	TrainAterrissage train2= new TrainAterrissage();
	TrainAterrissage train3= new TrainAterrissage();
	LED leds= new LED();

	Timer timer,timer2,timer3;
	
	
	public Controleur() {
		timer = new Timer(5000, new ActionListener() {
	           public void actionPerformed(ActionEvent e) {
	               train.finish();
	               mettreajour(1);
	       }
		});
		timer2 = new Timer(3300, new ActionListener() {
	           public void actionPerformed(ActionEvent e) {
	               train2.finish();
	               mettreajour(2);
	       }
		});
		timer3 = new Timer(3000, new ActionListener() {
	           public void actionPerformed(ActionEvent e) {
	               train3.finish();
	               mettreajour(3);
	       }
		});
		
		vue=new Display(this);
		
		train.addVolumeListener(vue);
	}
	
	/**
	 * Bouton manette cliqued
	 */
	public void boutonManetteActioned(){
		
		manette.switcher();
		train.switcher();
		train2.switcher();
		train3.switcher();
		
		timer.stop();
		timer2.stop();
		timer3.stop();
		
		if(manette.eteinte()){
			vue.transitionUp();
			
			timer.start();
			timer2.start();
			timer3.start();
		}
		else{
			vue.transitionDown();
			
			timer.start();
			timer2.start();
			timer3.start();
		}

		vue.imageLEDs_setIcon_LEDorange();
		leds.change(train.getEtat());
	}

	public void mettreajour(int numero){
		if(train.getEtat()==train2.getEtat() && train2.getEtat()==train3.getEtat()){
			leds.change(train.getEtat());
		}
		
		switch(numero){
		case 1:
			if(leds.eteinte()){
				vue.imageLEDs_setIcon_LEDeteinte();
			}else{
				vue.imageLEDs_setIcon_LEDvert();
			}
			
			if(train.ouvert()){
				vue.aterrissageImage_setIcon_ouvert();
			}
			else{
				vue.aterrissageImage_setIcon_ferme();
			}

			timer.stop();
			break;
		case 2:
			if(leds.eteinte()){

				vue.imageLEDs_setIcon_LEDeteinte();
			}else{
				vue.imageLEDs_setIcon_LEDvert();
			}
			if(train2.ouvert()){
				vue.aterrissageImage2_setIcon_ouvert();;
			}
			else{
				vue.aterrissageImage2_setIcon_ferme();;
			}

			timer2.stop();
			break;
		case 3:
			if(leds.eteinte()){

				vue.imageLEDs_setIcon_LEDeteinte();
			}else{
				vue.imageLEDs_setIcon_LEDvert();
			}
			if(train3.ouvert()){
				vue.aterrissageImage3_setIcon_ouvert();;
			}
			else{
				vue.aterrissageImage3_setIcon_ferme();;
			}

			timer3.stop();
			break;
		}
	}
	
	
}
